/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package view;

import controller.Controleur;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import model.Call;
import model.EStatusCall;

/**
 * Classe representant une demande de conversation dans la liste
 * @author Lefevre, Thoue
 */
public class JPanelCallDemande extends JPanel {

    private Controleur controleur;
    private ImageIcon iconDeccrocher;
    private ImageIcon iconRefuser;
    private ImageIcon iconStatus;
    private JLabel deccrocherButton;
    private JLabel refuserButton;
    private JLabel statusButton;
    /**
     * Constructeur
     * @param controleur controleur de l'application
     * @param call conversation en attenet
     */
    public JPanelCallDemande(Controleur controleur, Call call) {
        this.controleur = controleur;
        this.setOpaque(false);
        this.setLayout(new FlowLayout());
        this.setPreferredSize(new Dimension(220, 25));

        if (call.getStatus() == EStatusCall.DEMANDE) {
            iconStatus = new ImageIcon(getClass().getResource("orange16.png"));
        } else {
            iconStatus = new ImageIcon(getClass().getResource("vert16.png"));
        }
        statusButton = new JLabel(iconStatus);
        statusButton.setPreferredSize(new Dimension(16, 16));
        this.add(statusButton);

        JPanel panelNom = new JPanel();
        panelNom.setPreferredSize(new Dimension(120, 25));
        panelNom.setOpaque(false);
        panelNom.add(new JLabel(call.getUser().getNom() + " " + call.getUser().getPrenom()));
        this.add(panelNom);

        iconDeccrocher = new ImageIcon(getClass().getResource("call16.png"));
        deccrocherButton = new JLabel(iconDeccrocher);
        deccrocherButton.setPreferredSize(new Dimension(16, 16));
        deccrocherButton.setToolTipText("Déccrocher appel");
        deccrocherButton.addMouseListener(new DeccrocherListenner(call));
        this.add(deccrocherButton);

        iconRefuser = new ImageIcon(getClass().getResource("stop16.png"));
        refuserButton = new JLabel(iconRefuser);
        refuserButton.setPreferredSize(new Dimension(16, 16));
        refuserButton.addMouseListener(new RefuserListenner(call));
        this.add(refuserButton);

    }
    /**
     * Classe representant le listener du bouton pour accepter une conversation
     */
    class DeccrocherListenner extends MouseAdapter {

        private Call call;
        /**
         * Constructeur
         * @param call conversation cible
         */
        public DeccrocherListenner(Call call) {
            this.call = call;
        }
        /**
         * Evenement de clique sur le bouton
         * @param me evenement de la souris
         */
        @Override
        public void mouseClicked(MouseEvent me) {
            super.mouseClicked(me);
            if (call.getStatus() == EStatusCall.DEMANDE) {
                call.setStatus(EStatusCall.ACCEPT);
                controleur.accepter(call.getUser());                
            } else {
                controleur.confirmer(call.getUser());
            }
        }
        /**
         * Evenement au survol du bouton pour changer l'image
         * @param e evenement de survol
         */
        @Override
        public void mouseEntered(MouseEvent e) {
            deccrocherButton.setIcon(new ImageIcon(getClass().getResource("call16-light.png")));
        }
       /**
         * Evenement de fin du survol du bouton pour changer l'image
         * @param e evenement de fin de survol
         */
        @Override
        public void mouseExited(MouseEvent e) {
            deccrocherButton.setIcon(new ImageIcon(getClass().getResource("call16.png")));
        }
    }

    class RefuserListenner extends MouseAdapter {

        private Call call;
        /**
         * Constructeur
         * @param call conversation cible
         */
        public RefuserListenner(Call call) {
            this.call = call;
        }
                /**
         * Evenement de clique sur le bouton
         * @param me evenement de la souris
         */
        @Override
        public void mouseClicked(MouseEvent me) {
            super.mouseClicked(me);
            controleur.Refuser(call.getUser());
        }
        /**
         * Evenement au survol du bouton pour changer l'image
         * @param e evenement de survol
         */
        @Override
        public void mouseEntered(MouseEvent e) {
            refuserButton.setIcon(new ImageIcon(getClass().getResource("stop16-light.png")));
        }
       /**
         * Evenement de fin du survol du bouton pour changer l'image
         * @param e evenement de fin de survol
         */
        @Override
        public void mouseExited(MouseEvent e) {
            refuserButton.setIcon(new ImageIcon(getClass().getResource("stop16.png")));
        }
    }
}